
package callProcs;

import java.math.BigInteger;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


public class ProcsCliente {
    
    
  java.sql.Connection  con = null;
    public ProcsCliente(){
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost/bufete","root","1234");
            
        } catch (SQLException ex) {
            Logger.getLogger(ProcsInsertar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
 
    
    /*
     * Retorna los datos del cliente, para modificaciones y visualizarlos
     */
     public java.sql.ResultSet VerdatosCliente(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
       
            Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "Telefono, concat(dir.Direccion_cliente, ' Zona  ', dir.zona, ' ',muni.Nombre_municipio, ',', depto.Nombre_departamento) AS 'Direccion' , "+
                                 " c.idCliente , c.Dpi_cliente FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                sentencia);
           return rs;
     }
     
     public java.sql.ResultSet VerdatoCliente(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
       
            Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT  Nombre_cliente, Apellido_cliente, concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "month(Fecha_nacimiento) as 'MES', day(Fecha_nacimiento) as 'Dia', Year(Fecha_Nacimiento) as 'Año',"+
                                 "Telefono, dir.Direccion_cliente as 'Direccion', dir.zona as 'Zona' ,muni.Nombre_municipio as 'Muni',depto.Nombre_departamento as 'Depto' , "+
                                 "No_registro_cliente as 'Reg' ,No_orden_cliente as 'orden', "  +
                                 " c.idCliente , c.Direccion_cliente_idDireccion_cliente as 'Dir', c.Dpi_cliente , c.Estado_civil, c.Sabe_firmar FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                sentencia);
           return rs;
     }
    
     public java.sql.ResultSet ObtenerMuni(String muni) throws SQLException{
        java.sql.ResultSet rs = null ;
        try {
            
            Statement cs = con.createStatement();
            
                rs = cs.executeQuery("SELECT idMunicipio AS 'ID', Departamento_idDepartamento AS 'DEPTO',Nombre_Municipio as 'nombre' "+
                          " FROM municipio WHERE Nombre_Municipio LIKE '%"+muni+"%'"); 
           
        } catch (SQLException ex) {
            Logger.getLogger(ProcsCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
         
         return rs;
     }
     
    public void ActualizaCliente(int IdCliente , String nombre ,String apellido ,int idDireccion ,
                                    String FechaNac , boolean estado_civil , boolean firma, int registro,
                                    String orden,BigInteger dpi  ) throws SQLException{
        
        
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_cliente( "+IdCliente+",'"+nombre+"' , '"+apellido +"' ,"+ idDireccion +
                                                            ",'" + FechaNac+"',"+ estado_civil+ ","+ firma + ","+ registro+","+"'"+ orden + "',"+
                                                            dpi+")}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
        
        
        
    }
    
    public java.sql.ResultSet ObtenerMuni(int idDep, String nombre) throws SQLException
     {

         java.sql.ResultSet rs = null;
         Statement cs = con.createStatement();

         rs = cs.executeQuery("select idMunicipio from municipio where Departamento_idDepartamento = " + String.valueOf(idDep) + " and Nombre_municipio =" + "'"+nombre+"'");
         return rs;
     }
    
    public void ActualizaDireccionCliente(int idDir, String direccion, int zona, int idMuni) throws SQLException{
        
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_direccion_cliente(" + idDir + ",'"+direccion+"',"+ zona + ","+ idMuni+" )}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
    }
    
    public java.sql.ResultSet verDatosClienteTabla(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
       
            Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT  Nombre_cliente, Apellido_cliente, concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "month(Fecha_nacimiento) as 'MES', day(Fecha_nacimiento) as 'Dia', Year(Fecha_Nacimiento) as 'Año',"+
                                 "Telefono, dir.Direccion_cliente as 'Direccion', dir.zona as 'Zona' ,muni.Nombre_municipio as 'Muni',depto.Nombre_departamento as 'Depto' , "+
                                  "No_registro_cliente as 'Reg' ,No_orden_cliente as 'orden', "  +
                                  "c.idCliente , c.Direccion_cliente_idDireccion_cliente as 'Dir', c.Dpi_cliente , c.Estado_civil, c.Sabe_firmar FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                 "WHERE idCliente = " + sentencia);
           
     
        return rs;
     }
    
    
    public java.sql.ResultSet TelefonoCliente(String idCliente) throws SQLException {
         java.sql.ResultSet rs = null ;
         
         Statement cs = con.createStatement();
         
         rs  = cs.executeQuery("SELECT idTelefonoCliente , Telefono as 'noTel', TipoTelefono_idTipoTel  as 'tipo' , tipo.NombreTipo FROM telefonocliente tel " +
                               "INNER JOIN tipotelefono tipo oN tipo.idTipoTel = tel.TipoTelefono_idTipoTel " +
                               "WHERE Cliente_idCliente = '"+ idCliente.trim()+ "'");
         
         return rs;
        
    }
    
    public void ActualizarTelefono(String idCliente, String numTel, int tipo, String idTel) throws SQLException{
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_telefono_cliente( " + idTel + ", " +numTel + ","+ idCliente + ","+ String.valueOf(tipo)+ ")}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
    }
    
     public void insertarTelefonoCliente(String Telefono,int tipo, String idCliente){
        
        try {
            java.sql.CallableStatement cs = con.prepareCall("{call InsertaTelCliente('"+Telefono+"',"+String.valueOf(tipo)+","+  idCliente+")}");
            java.sql.Statement stmt  = con.createStatement();
            java.sql.ResultSet rs = cs.executeQuery();
            
        } catch (SQLException ex) {
          
        }

    }
     
    public java.sql.ResultSet Usuario() throws SQLException {
         java.sql.ResultSet rs = null ;
         
         Statement cs = con.createStatement();
         
         rs  = cs.executeQuery("select contrasena, nombreUsuario, apellidoUsuario,idUsuario from usuario");
         
         return rs;
        
    }
    
    
 
    
     
     
}